package com.fanco.learn_datastruct_leetcode.designpattern.singleton.type1;

/**
 * @author qiaowang 2022/2/8
 * 描述:饿汉式（静态变量）
 * 优点：类装载的时候完成实例化，避免了线程同步问题。
 * 缺点：类装载的时候完成实例化，如果从未使用过，则会造成内存浪费。
 */
public class Singleton01 {
    public static void main(String[] args) {
        Singleton instance = Singleton.getInstance();
        Singleton instance1 = Singleton.getInstance();
        System.out.println(instance1 == instance);
        System.out.println(instance1.hashCode());
        System.out.println(instance.hashCode());

    }
}

/**
 * 饿汉式（静态变量）
 */
class Singleton {
    // 1.构造器私有化
    private Singleton() {
    }

    // 2.本类内部创建对象实例
    public static final Singleton instance = new Singleton();

    // 3. 提供一个公有的静态方法，返回实例对象
    public static Singleton getInstance() {
        return instance;
    }
}
